package com.springboot.bookmanegersystem.controller;

import com.springboot.bookmanegersystem.model.BookInfo;
import com.springboot.bookmanegersystem.model.req.BookRequestParam;
import com.springboot.bookmanegersystem.model.resp.Result;
import com.springboot.bookmanegersystem.service.BookService;
import com.springboot.bookmanegersystem.service.UserService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description :
 * User: jiume
 * Date: 2025-05-11
 * Time: 8:47
 */
@RestController
@RequestMapping("/book")
public class BookInfoController {

    @Resource
    private BookService bookService;

    // 获取前三本书
    @GetMapping("/getBookListDefault")
    public Result getBookListDefault() {
        return bookService.getBookListDefault();
    }

    // 根据 当前页数 和 页面展示的图书总数 来获取图书列表信息
    @GetMapping("/getBookList")
    public Result getBookList(BookRequestParam bookRequestParam) {
        return bookService.getBookList(bookRequestParam);
    }

    // 获取数据库中图书总数
    @GetMapping("/getBookCount")
    public Result getBookCount() {
        return bookService.getBookCount();
    }

    // 删除图书信息
    @PutMapping("/deleteBook") // 更新数据
    public Result deleteBook(Integer bookId) {
        return bookService.deleteBook(bookId);
    }

    // 更新图书信息
    @PutMapping("/updateBook")
    public Result updateBook(@RequestBody BookInfo bookInfo) {
        return bookService.updateBook(bookInfo);
    }

    // 根据图书id获取图书信息
    @GetMapping("/getBookById")
    public Result getBookById(Integer bookId) {
        return bookService.getBookById(bookId);
    }

    // 新增图书
    @PostMapping("/addBook")
    public Result addBook(@RequestBody BookInfo bookInfo) {
        return bookService.addBook(bookInfo);
    }

    // 批量删除
    // 这里需要加上事务，因为可能存在某一个图书删除失败，导致后续图书无法删除，
    // 但前面已经删除的图书确确实实被删除了
    @PutMapping("/batchDeleteBook")
    public Result batchDeleteBook(@RequestBody List<Integer> bookIdList) {
        return bookService.batchDeleteBook(bookIdList);
    }
}
